{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "\n",
    "## Variogram Calculation in Python with PyGSLIB / GeostatPy for Engineers, Data Scientists and Geoscientists \n",
    "### Michael Pyrcz, Associate Professor, University of Texas at Austin \n",
    "\n",
    "#### [Twitter/@GeostatsGuy](https://twitter.com/geostatsguy) | [GitHub/GeostatsGuy](https://github.com/GeostatsGuy) | [Website](http://michaelpyrcz.com) | [GoogleScholar](https://scholar.google.com/citations?user=QVZ20eQAAAAJ&hl=en&oi=ao) | [Book](https://www.amazon.com/Geostatistical-Reservoir-Modeling-Michael-Pyrcz/dp/0199731446) | [YouTube Lectures](https://www.youtube.com/channel/UCLqEr-xV-ceHdXXXrTId5ig)\n",
    "\n",
    "This is a tutorial for / demonstration of **variogram calculation in Python** with the PyGSLIB package (by Adrian Martinez Vargas) that wraps some of the FORTRAN algorithms from GSLIB, Geostatistical Library (Deutsch and Journel, 1997).  I also use a couple functions form GeostatPy (by Michael Pyrcz, an informal collection of Python programs that write parameter files, data files, run GSLIB executables and then read results back and some reimplimentation of GSLIB visualization with MatPlotLib methods). The GeostatPy functions are embeded directly in the workflow.\n",
    "\n",
    "Variogram calculation for irregularly-spaced data is available in the $gam$ algorithm from GSLIB. The methods is written about in the GSLIB book by Deutsch and Journel (1998) and other textbooks such as Pyrcz and Deutsch (2014).  The implementation is true to the GSLIB parameterization and includes the ability to calculate an array of outputs with multiple vairogram types and multiple directions all at once.  \n",
    "\n",
    "The steps for variogram claculation include:\n",
    "\n",
    "1. load the 2D data file\n",
    "2. perform basic data checks\n",
    "3. transform to standard normal\n",
    "4. calculate and visualize an omnidirectional variogram\n",
    "5. calculate and visualize directionals variogram\n",
    "\n",
    "To accomplish this I have provided wrappers or reimplementation in Python for the following GSLIB methods:\n",
    "\n",
    "1. hist - histograms plots reimplemented with GSLIB parameters using python methods\n",
    "2. locmap - location maps reimplemented with GSLIB parameters using python methods\n",
    "3. affine - affine correction adjust the mean and standard deviation of a feature reimplemented with GSLIB parameters using Python methods\n",
    "\n",
    "Note: If interested the GSLIB source and executables are available at http://www.statios.com/Quick/gslib.html.  For the reference on using GSLIB check out the User Guide, GSLIB: Geostatistical Software Library and User's Guide by Clayton V. Deutsch and Andre G. Journel.\n",
    "\n",
    "I built this workflow to support my students learning about variogram calculation and also to try out the PyGSLIB package in Python.  \n",
    "\n",
    "I created GeostatPy functions to allow people to use these GSLIB functions that are extremely robust in Python. Also this should be a bridge to allow so many familar with GSLIB to work in Python as a kept the parameterization and displays consistent with GSLIB.  The wrappers are simple functions declared below that write the parameter files, run the GSLIB executable in the working directory and load and visualize the output in Python. This will be included on GitHub for anyone to try it out https://github.com/GeostatsGuy/.  \n",
    "\n",
    "I used this tutorial in my Introduction to Geostatistics undergraduate class (PGE337 at UT Austin) as part of a first introduction to geostatistics and Python for the engineering undergraduate students. It is assumed that students have no previous Python, geostatistics nor machine learning experience; therefore, all steps of the code and workflow are explored and described. This tutorial is augmented with course notes in my class.  The Python code and markdown was developed and tested in Jupyter. \n",
    "\n",
    "#### Load the required libraries\n",
    "\n",
    "The following code loads the required libraries.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os                                                 # to set current working directory \n",
    "import numpy as np                                        # arrays and matrix math\n",
    "import pandas as pd                                       # DataFrames\n",
    "import matplotlib.pyplot as plt                           # plotting\n",
    "import pygslib as gslib"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you get a package import error, you may have to first install some of these packages. This can usually be accomplished by opening up a command window on Windows and then typing 'python -m pip install [package-name]'. More assistance is available with the respective package docs.  \n",
    "\n",
    "#### Declare functions\n",
    "\n",
    "GeostatsPy includes wrappers and reimplementations of GSLIB method along with 4 utilities to move between GSLIB's Geo-EAS data sets and DataFrames, and grids and 2D Numpy arrays respectively and 2 utilities to resample from regular datasets.  For this workflow we have embedded these:\n",
    "\n",
    "1. hist\n",
    "2. locmap\n",
    "3. affine\n",
    "\n",
    "For now we embed the functions in the workflow below. In the future this will be turned into a proper Python package.  Warning, there has been no attempt to make these functions robust in the precense of bad inputs.  If you get a crazy error check the inputs.  Are the arrays empty and are they the same size when they should be?  Are the arrays the correct dimension?  Is the parameter order mixed up?  Make sure the inputs are consistent with the descriptions in this document."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Some GeostatsPy Functions - by Michael Pyrcz the full set is available at https://git.io/fNgR7.\n",
    "\n",
    "# histogram, reimplemented in Python of GSLIB hist with MatPlotLib methods\n",
    "def hist(array,xmin,xmax,log,cumul,bins,weights,xlabel,title):\n",
    "    plt.figure(figsize=(8,6))\n",
    "    cs = plt.hist(array, alpha = 0.2, color = 'red', edgecolor = 'black', bins=bins, range = [xmin,xmax], weights = weights, log = log, cumulative = cumul)\n",
    "    plt.title(title)\n",
    "    plt.xlabel(xlabel); plt.ylabel('Frequency')    \n",
    "    plt.show()\n",
    "    return\n",
    "\n",
    "# location map, reimplemention in Python of GSLIB locmap with MatPlotLib methods\n",
    "def locmap(df,xcol,ycol,vcol,xmin,xmax,ymin,ymax,vmin,vmax,title,xlabel,ylabel,vlabel,cmap):\n",
    "    ixy = 0 \n",
    "    plt.figure(figsize=(8,6))    \n",
    "    im = plt.scatter(df[xcol],df[ycol],s=None, c=df[vcol], marker=None, cmap=cmap, norm=None, vmin=vmin, vmax=vmax, alpha=0.8, linewidths=0.8, verts=None, edgecolors=\"black\")\n",
    "    plt.title(title)\n",
    "    plt.xlim(xmin,xmax)\n",
    "    plt.ylim(ymin,ymax)    \n",
    "    plt.xlabel(xlabel)\n",
    "    plt.ylabel(ylabel)\n",
    "    cbar = plt.colorbar(im, orientation = 'vertical',ticks=np.linspace(vmin,vmax,10))\n",
    "    cbar.set_label(vlabel, rotation=270, labelpad=20)\n",
    "    plt.show()\n",
    "    return im\n",
    "\n",
    "# affine distribution correction reimplemented in Python with numpy methods \n",
    "def affine(array,tmean,tstdev):    \n",
    "    if array.ndim != 2:\n",
    "        Print(\"Error: must use a 2D array\")\n",
    "        return\n",
    "    nx = array.shape[0]\n",
    "    ny = array.shape[1]\n",
    "    mean = np.average(array)\n",
    "    stdev = np.std(array)\n",
    "    for iy in range(0,ny):\n",
    "        for ix in range(0,nx):\n",
    "             array[ix,iy]= (tstdev/stdev)*(array[ix,iy] - mean) + tmean  \n",
    "    return(array)            \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Set the working directory\n",
    "\n",
    "I always like to do this so I don't lose files and to simplify subsequent read and writes (avoid including the full address each time). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 206,
   "metadata": {},
   "outputs": [],
   "source": [
    "os.chdir(\"c:/PGE337\")                                   # set the working directory"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You will have to update the part in quotes with your own working directory and the format is different on a Mac (e.g. \"~/PGE\"). \n",
    "\n",
    "##### Load the 2D Spatial Data\n",
    "\n",
    "The dataset '2D_MV_200Wells.csv' is available on GitHub at https://git.io/fxyMy.  Copy it to your working directory (set above) and the following code will load it as a DataFrame. We also perform basic data checks by visualizing the data and then calculating summary statistics."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      X     Y  facies_threshold_0.3  porosity  permeability  \\\n",
      "0   565  1485                     1    0.1184         6.170   \n",
      "1  2585  1185                     1    0.1566         6.275   \n",
      "2  2065  2865                     2    0.1920        92.297   \n",
      "3  3575  2655                     1    0.1621         9.048   \n",
      "4  1835    35                     1    0.1766         7.123   \n",
      "\n",
      "   acoustic_impedance  \n",
      "0               2.009  \n",
      "1               2.864  \n",
      "2               3.524  \n",
      "3               2.157  \n",
      "4               3.979  \n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X</th>\n",
       "      <th>Y</th>\n",
       "      <th>facies_threshold_0.3</th>\n",
       "      <th>porosity</th>\n",
       "      <th>permeability</th>\n",
       "      <th>acoustic_impedance</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>565</td>\n",
       "      <td>1485</td>\n",
       "      <td>1</td>\n",
       "      <td>0.1184</td>\n",
       "      <td>6.170</td>\n",
       "      <td>2.009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2585</td>\n",
       "      <td>1185</td>\n",
       "      <td>1</td>\n",
       "      <td>0.1566</td>\n",
       "      <td>6.275</td>\n",
       "      <td>2.864</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2065</td>\n",
       "      <td>2865</td>\n",
       "      <td>2</td>\n",
       "      <td>0.1920</td>\n",
       "      <td>92.297</td>\n",
       "      <td>3.524</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3575</td>\n",
       "      <td>2655</td>\n",
       "      <td>1</td>\n",
       "      <td>0.1621</td>\n",
       "      <td>9.048</td>\n",
       "      <td>2.157</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1835</td>\n",
       "      <td>35</td>\n",
       "      <td>1</td>\n",
       "      <td>0.1766</td>\n",
       "      <td>7.123</td>\n",
       "      <td>3.979</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      X     Y  facies_threshold_0.3  porosity  permeability  \\\n",
       "0   565  1485                     1    0.1184         6.170   \n",
       "1  2585  1185                     1    0.1566         6.275   \n",
       "2  2065  2865                     2    0.1920        92.297   \n",
       "3  3575  2655                     1    0.1621         9.048   \n",
       "4  1835    35                     1    0.1766         7.123   \n",
       "\n",
       "   acoustic_impedance  \n",
       "0               2.009  \n",
       "1               2.864  \n",
       "2               3.524  \n",
       "3               2.157  \n",
       "4               3.979  "
      ]
     },
     "execution_count": 207,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv(\"2D_MV_200Wells.csv\")                # read a .csv file in as a DataFrame\n",
    "print(df.iloc[0:5,:])                                 # display first 4 samples in the table as a preview\n",
    "df.head()                                             # we could also use this command for a table preview"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>200.0</td>\n",
       "      <td>2053.400000</td>\n",
       "      <td>1113.524641</td>\n",
       "      <td>25.00000</td>\n",
       "      <td>1112.500000</td>\n",
       "      <td>2160.00000</td>\n",
       "      <td>2915.0000</td>\n",
       "      <td>3955.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>200.0</td>\n",
       "      <td>1876.150000</td>\n",
       "      <td>1137.580160</td>\n",
       "      <td>35.00000</td>\n",
       "      <td>920.000000</td>\n",
       "      <td>1855.00000</td>\n",
       "      <td>2782.5000</td>\n",
       "      <td>3995.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>facies_threshold_0.3</th>\n",
       "      <td>200.0</td>\n",
       "      <td>1.330000</td>\n",
       "      <td>0.471393</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>2.0000</td>\n",
       "      <td>2.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>porosity</th>\n",
       "      <td>200.0</td>\n",
       "      <td>0.149300</td>\n",
       "      <td>0.032948</td>\n",
       "      <td>0.05000</td>\n",
       "      <td>0.132175</td>\n",
       "      <td>0.15015</td>\n",
       "      <td>0.1742</td>\n",
       "      <td>0.2232</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>permeability</th>\n",
       "      <td>200.0</td>\n",
       "      <td>25.287462</td>\n",
       "      <td>64.470135</td>\n",
       "      <td>0.01582</td>\n",
       "      <td>1.366750</td>\n",
       "      <td>4.82550</td>\n",
       "      <td>14.5970</td>\n",
       "      <td>463.6410</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>acoustic_impedance</th>\n",
       "      <td>200.0</td>\n",
       "      <td>3.000435</td>\n",
       "      <td>0.592201</td>\n",
       "      <td>2.00900</td>\n",
       "      <td>2.483250</td>\n",
       "      <td>2.96450</td>\n",
       "      <td>3.5270</td>\n",
       "      <td>3.9840</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                      count         mean          std       min          25%  \\\n",
       "X                     200.0  2053.400000  1113.524641  25.00000  1112.500000   \n",
       "Y                     200.0  1876.150000  1137.580160  35.00000   920.000000   \n",
       "facies_threshold_0.3  200.0     1.330000     0.471393   1.00000     1.000000   \n",
       "porosity              200.0     0.149300     0.032948   0.05000     0.132175   \n",
       "permeability          200.0    25.287462    64.470135   0.01582     1.366750   \n",
       "acoustic_impedance    200.0     3.000435     0.592201   2.00900     2.483250   \n",
       "\n",
       "                             50%        75%        max  \n",
       "X                     2160.00000  2915.0000  3955.0000  \n",
       "Y                     1855.00000  2782.5000  3995.0000  \n",
       "facies_threshold_0.3     1.00000     2.0000     2.0000  \n",
       "porosity                 0.15015     0.1742     0.2232  \n",
       "permeability             4.82550    14.5970   463.6410  \n",
       "acoustic_impedance       2.96450     3.5270     3.9840  "
      ]
     },
     "execution_count": 208,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe().transpose()   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following are the basic parameters for the demonstration.  This includes the number of cells in the 2D regular grid, the cell size (step) and the x and y min and max along with the color scheme."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 209,
   "metadata": {},
   "outputs": [],
   "source": [
    "xmin = 0.0; xmax = 4000.0\n",
    "ymin = 0.0; ymax = 4000.0\n",
    "vmin = 0.05; vmax = 0.22; cmap = plt.cm.plasma \n",
    "n = len(df)\n",
    "weights = np.ones(n)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For variogram calculations we will want to visualize the data.  We do this to determine variogram search parameters such as lag distance and number of lags.  In addition, we should look for data issues (anomalous values, data coverage) and trends. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x20c9e696a58>"
      ]
     },
     "execution_count": 210,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "locmap(df,\"X\",\"Y\",\"porosity\",xmin,xmax,ymin,ymax,vmin,vmax,\"Well Average Porosity\",\"X (m)\",\"Y (m)\",\"Porosity\",cmap)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We should also look at the distribution.  We are concerned about outliers (variogram is sensitive to outliers), distribution shape (is it already Gaussian?) and the variance as this is the sill of our experimental variogram."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 211,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Porosity Variance =  0.0011\n"
     ]
    }
   ],
   "source": [
    "hist(df[\"porosity\"],vmin,vmax,log=False,cumul=False,bins=20,weights=None,xlabel=\"Porosity (%)\",title=\"Porosity Dataset\")\n",
    "var = np.var(df[\"porosity\"])\n",
    "print('Porosity Variance = ',round(var,4))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's transform the data to standard normal (Gaussian with a mean of 0.0 and a variance of 1.0).  This would be required if we were applying the variogram in a Gaussian simulation method. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Normal Score Porosity Variance =  0.9908\n"
     ]
    }
   ],
   "source": [
    "t1, t2 = gslib.nonlinear.ttable(z = df['porosity'].values, w = weights)\n",
    "npor = gslib.nonlinear.nscore(z = por, transin = t1, transout = t2)\n",
    "df[\"nporosity\"] = npor\n",
    "var = np.var(df[\"nporosity\"])\n",
    "print('Normal Score Porosity Variance = ',round(var,4))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The variogram calculation will require an Z value, since we are in 2D we will add a new 'Z' property to our DataFrame with just 0.0 values. We will check the DataFrame again to make sure we have all the variables as expected."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X</th>\n",
       "      <th>Y</th>\n",
       "      <th>facies_threshold_0.3</th>\n",
       "      <th>porosity</th>\n",
       "      <th>permeability</th>\n",
       "      <th>acoustic_impedance</th>\n",
       "      <th>nporosity</th>\n",
       "      <th>Z</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>565</td>\n",
       "      <td>1485</td>\n",
       "      <td>1</td>\n",
       "      <td>0.1184</td>\n",
       "      <td>6.170</td>\n",
       "      <td>2.009</td>\n",
       "      <td>-0.984235</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2585</td>\n",
       "      <td>1185</td>\n",
       "      <td>1</td>\n",
       "      <td>0.1566</td>\n",
       "      <td>6.275</td>\n",
       "      <td>2.864</td>\n",
       "      <td>0.170013</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2065</td>\n",
       "      <td>2865</td>\n",
       "      <td>2</td>\n",
       "      <td>0.1920</td>\n",
       "      <td>92.297</td>\n",
       "      <td>3.524</td>\n",
       "      <td>1.356312</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3575</td>\n",
       "      <td>2655</td>\n",
       "      <td>1</td>\n",
       "      <td>0.1621</td>\n",
       "      <td>9.048</td>\n",
       "      <td>2.157</td>\n",
       "      <td>0.365149</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1835</td>\n",
       "      <td>35</td>\n",
       "      <td>1</td>\n",
       "      <td>0.1766</td>\n",
       "      <td>7.123</td>\n",
       "      <td>3.979</td>\n",
       "      <td>0.730639</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      X     Y  facies_threshold_0.3  porosity  permeability  \\\n",
       "0   565  1485                     1    0.1184         6.170   \n",
       "1  2585  1185                     1    0.1566         6.275   \n",
       "2  2065  2865                     2    0.1920        92.297   \n",
       "3  3575  2655                     1    0.1621         9.048   \n",
       "4  1835    35                     1    0.1766         7.123   \n",
       "\n",
       "   acoustic_impedance  nporosity    Z  \n",
       "0               2.009  -0.984235  0.0  \n",
       "1               2.864   0.170013  0.0  \n",
       "2               3.524   1.356312  0.0  \n",
       "3               2.157   0.365149  0.0  \n",
       "4               3.979   0.730639  0.0  "
      ]
     },
     "execution_count": 213,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z = np.zeros(n)\n",
    "df[\"Z\"] = z\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we check the histogram of the normal score transformed porosity values, 'nporosity' in our DataFrame."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Normal Score Porosity Variance =  0.9908\n"
     ]
    }
   ],
   "source": [
    "hist(df[\"nporosity\"],-3,3,log=False,cumul=False,bins=20,weights=None,xlabel=\"Normal Score Porosity\",title=\"Normal Score Porosity Dataset\")\n",
    "var = np.var(df[\"nporosity\"])\n",
    "print('Normal Score Porosity Variance = ',round(var,4))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The property distribution is standard normal and we have a good idea of the parameters for the search template so we are ready to set the parameters for a 2D omnidirectional variogram calculation.  This is what's known as a library in Python. The parameters are the same as those in GSLIB, and consistent with the class notes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "metadata": {},
   "outputs": [],
   "source": [
    "parameters = {\n",
    "        'x'      :  df['X'],          # X coordinates, array('f') with bounds (nd), nd is number of data points\n",
    "        'y'      :  df['Y'],          # Y coordinates, array('f') with bounds (nd)\n",
    "        'z'      :  df['Z'],          # Z coordinates, array('f') with bounds (nd)\n",
    "        'bhid'   :  df['Z'],          # bhid for downhole variogram, array('i') with bounds (nd)\n",
    "        'vr'     :  df[\"nporosity\"],  # Variables, array('f') with bounds (nd,nv), nv is number of variables\n",
    "        'tmin'   : -1.0e21,        # trimming limits, float\n",
    "        'tmax'   :  1.0e21,        # trimming limits, float\n",
    "        'nlag'   :  20,            # number of lags, int\n",
    "        'xlag'   :  100,           # lag separation distance, float\n",
    "        'xltol'  :  50,            # lag tolerance, float\n",
    "        'azm'    :  [0],             # azimuth, array('f') with bounds (ndir)\n",
    "        'atol'   :  [90],            # azimuth tolerance, array('f') with bounds (ndir)\n",
    "        'bandwh' :  [9999],          # bandwidth 'horizontal', array('f') with bounds (ndir)\n",
    "        'dip'    :  [0],             # dip, array('f') with bounds (ndir)\n",
    "        'dtol'   :  [0],             # dip tolerance, array('f') with bounds (ndir)\n",
    "        'bandwd' :  [9999],          # bandwidth 'vertical', array('f') with bounds (ndir)\n",
    "        'isill'  :  0,             # standardize sills? (0=no, 1=yes), int\n",
    "        'sills'  :  [1.0],           # variance used to std the sills, array('f') with bounds (nv)\n",
    "        'ivtail' :  [1],             # tail var., array('i') with bounds (nvarg), nvarg is number of variograms\n",
    "        'ivhead' :  [1],             # head var., array('i') with bounds (nvarg)\n",
    "        'ivtype' :  [1],             # variogram type, array('i') with bounds (nvarg)\n",
    "        'maxclp' :  [50000]}         # maximum number of variogram point cloud to use, input int"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The PyGSLIB package includes a check method for the library.  Run this and check for error."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The variogram parameters pass the test.\n"
     ]
    }
   ],
   "source": [
    "variogram_check = gslib.gslib.check_gamv_par(parameters)\n",
    "if variogram_check == 1:\n",
    "    print(\"The variogram parameters pass the test.\")\n",
    "else:\n",
    "    print(\"The variogram parameters failed the test, check the errors.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we are ready to calculate a variogram.  The following includes output with lag distance (dis), variogram value (gam), number of pairs (np) and a variety of other outputs that we will not use in this workflow (check the PyGSLIB docs to learn more)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "dis, gam, hm, tm, hv, tv, np, cldi, cldj, cldg, cldh = gslib.gslib.gamv(parameters)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's plot the omnidirectional variogram.  I use the MatPlotLib package to make a standard variogram plot.  Note, the outputs are arrays over variogram types and directions, by using [0][0] we indicate to use the first (and only) one."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "ax.plot(dis[0][0],gam[0][0],'x',color = 'black')\n",
    "ax.plot([0,2000],[1.0,1.0],color = 'black')\n",
    "ax.set_xlabel(r'Lag Distance $\\bf(h)$, (m)')\n",
    "ax.set_ylabel(r'$\\gamma \\bf(h)$')\n",
    "ax.set_title('Omnidirectional Normal Score Porosity Variogram')\n",
    "ax.set_xlim([0,2000])\n",
    "ax.set_ylim([0,1.1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "That is a great looking variogram.  Could have a nugget, two nested spherical structures with ultimate range of aobut 1,800 m. We will cover variogram modeling in our next workflow.\n",
    "\n",
    "Let's try directional variograms.  To do this we set the azimuths (2 of them in an array) and the azimuth tolerances (one for each).  Now we have to double up the other parameters."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [],
   "source": [
    "dir_parameters = {\n",
    "        'x'      :  df['X'],          # X coordinates, array('f') with bounds (nd), nd is number of data points\n",
    "        'y'      :  df['Y'],          # Y coordinates, array('f') with bounds (nd)\n",
    "        'z'      :  df['Z'],          # Z coordinates, array('f') with bounds (nd)\n",
    "        'bhid'   :  df['Z'],          # bhid for downhole variogram, array('i') with bounds (nd)\n",
    "        'vr'     :  df[\"nporosity\"],  # Variables, array('f') with bounds (nd,nv), nv is number of variables\n",
    "        'tmin'   : -1.0e21,           # trimming limits, float\n",
    "        'tmax'   :  1.0e21,           # trimming limits, float\n",
    "        'nlag'   :  10,               # number of lags, int\n",
    "        'xlag'   :  200,              # lag separation distance, float\n",
    "        'xltol'  :  100,               # lag tolerance, float\n",
    "        'azm'    :  [0,90],           # azimuth, array('f') with bounds (ndir)\n",
    "        'atol'   :  [22.5,22.5],           # azimuth tolerance, array('f') with bounds (ndir)\n",
    "        'bandwh' :  [9999,9999],           # bandwidth 'horizontal', array('f') with bounds (ndir)\n",
    "        'dip'    :  [0,0],              # dip, array('f') with bounds (ndir)\n",
    "        'dtol'   :  [0,0],              # dip tolerance, array('f') with bounds (ndir)\n",
    "        'bandwd' :  [9999,9999],           # bandwidth 'vertical', array('f') with bounds (ndir)\n",
    "        'isill'  :  0,                # standardize sills? (0=no, 1=yes), int\n",
    "        'sills'  :  [1.0],            # variance used to std the sills, array('f') with bounds (nv)\n",
    "        'ivtail' :  [1],              # tail var., array('i') with bounds (nvarg), nvarg is number of variograms\n",
    "        'ivhead' :  [1],              # head var., array('i') with bounds (nvarg)\n",
    "        'ivtype' :  [1],              # variogram type, array('i') with bounds (nvarg)\n",
    "        'maxclp' :  [50000]}          # maximum number of variogram point cloud to use, input int"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can check our variogram parameters again."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The variogram parameters pass the test.\n"
     ]
    }
   ],
   "source": [
    "variogram_check = gslib.gslib.check_gamv_par(dir_parameters)\n",
    "if variogram_check == 1:\n",
    "    print(\"The variogram parameters pass the test.\")\n",
    "else:\n",
    "    print(\"The variogram parameters failed the test, check the errors.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "and run the vairogram calculation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 186,
   "metadata": {},
   "outputs": [],
   "source": [
    "dir_dis, dir_gam, hm, tm, hv, tv, dir_np, cldi, cldj, cldg, cldh = gslib.gslib.gamv(dir_parameters)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We modified the plot to include both directional variograms with colours and legend to tell them apart."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 192,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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7ty5zJkzh+23357TTjuN6667jhUrVjBv3jwA5s+fz7XXXgvAddddx/z58wGYN28eN910ExFVL88bU04kZmaj0NEBXV2wZEn2XG8SAXj00UfZd9/Nl9vNnDmTRx99lF133ZUpU6YMGlc5/5QpU9hll11Yv359/YHUyInEzGwUSiXo6YGFC7PnyjaT0ahWmti4ceMW48pnYlWbvxlnnjmRmJnVqNwm0tsLixdvruaqN5nMnDmTRx7Z3CXhwMAA++23H8888wwbNmzYNG7GjBlbzL9hwwaeffZZdt999/qCGAUnEjOzGvX1DW4TKbeZ9PXVt9z29nZWrVrFmjVrePHFF1m6dCknn3wyHR0dLFu2DIArrriCU07JOk4/+eSTueKKKwBYtmwZxx57bFNKJGpGw0wjtbW1RX9/f7PDMLNx7v777+c1r3lNs8Pg+uuv59xzz2Xjxo2cddZZXHDBBTzwwAOcdtppPPXUUxx66KFcddVV7LDDDjz//POcccYZ3HXXXey+++4sXbqUOXPmbLHMat9N0h0R0daImJ1IzMxonUQyFsY6kbhqy8zM6uJEYmZmdXEiMTOzujiRmJlZXZxIzMysLk4kZmZWFycSM7Madd/aTWnN4MvYS2tKdN9afz/y1bqRX7FiBYcddhive93rmD9//qar3COCD3/4w8ydO5dDDjmEO++8s+7PHw0nEjOzGrXPaKdzWeemZFJaU6JzWSftM+rrR36obuTnz5/P0qVLueeee9h///03Xc1+ww03sGrVKlatWsWll15KV1dX3d9tNJxIzMxq1DG7g955vXQu62RRaRGdyzrpnddLx+z6ugCu1o38Nddcww477MCBBx4IwNve9jauueYaIOtG/swzz0QSRx55JM888wyPPfZY3d+vVk4kZmaj0DG7g662LpbcsoSutq66kwhU70b+8ccf56WXXqLcg8eyZcs2ddQ4VLfzRXMiMTMbhdKaEj39PSx880J6+nu2aDMZjWpdVm2zzTYsXbqU8847j8MPP5xp06ZtujdJq3QjP6XwTzQzG+fKbSLl6qyOWR0Nqd6q1o38jBkzOOqoo/jP//xPAG688UZ+9atfDTt/0VwiMTOrUd/avkFJo9xm0re2vn7kh+pG/oknngDghRde4JJLLuGcc84Bsm7kr7zySiKC2267jV122YW99967vi83Ci6RmJnVaMHR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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "ax.plot(dir_dis[0][0],dir_gam[0][0],'x',color = 'blue',label = '000')\n",
    "ax.plot(dir_dis[0][0],dir_gam[0][1],'x',color = 'green', label = '090')\n",
    "ax.plot([0,2000],[1.0,1.0],color = 'black')\n",
    "ax.set_xlabel(r'Lag Distance $\\bf(h)$, (m)')\n",
    "ax.set_ylabel(r'$\\gamma \\bf(h)$')\n",
    "ax.set_title('Directional Normal Score Porosity Variogram')\n",
    "ax.set_xlim([0,2000])\n",
    "ax.set_ylim([0,1.1])\n",
    "handles, labels = ax.get_legend_handles_labels()\n",
    "ax.legend(handles[::], labels[::])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Comments\n",
    "\n",
    "With this basic workflow it would be possible to calculate variograms in Python for any spatial dataset.  Appreciation to Adrian Martinez Vargas for the useful package, it has assisted with teaching geostatistics to my students.   \n",
    "\n",
    "*Michael*\n",
    "\n",
    "Michael Pyrcz, Ph.D., P.Eng. Associate Professor The Hildebrand Department of Petroleum and Geosystems Engineering, Bureau of Economic Geology, The Jackson School of Geosciences, The University of Texas at Austin\n",
    "\n",
    "On twitter I'm the @GeostatsGuy.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
